//
//  SQLManager.swift
//  FMDB练习
//
//  Created by 沐颜澈 on 16/7/8.
//  Copyright © 2016年 muyanche. All rights reserved.
//

import UIKit

//设置数据库的名称
private let dbName = "status.db"

//这个类谁也不继承
class SQLManager {
    //设置一个全局访问点
    static let sharedTools:SQLManager = SQLManager()
    
    //队列的方式
    let queue:FMDatabaseQueue
    
    //构造函数
    private init() {
        //打开数据库
        
        //路径
        let path = (NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! as NSString).stringByAppendingPathComponent(dbName)
        
        print(path)
        
        queue = FMDatabaseQueue(path: path)
        
        //调用表
        createtable()
        
        
    }
    
    //创建一个表,私有的
    private func createtable() {
        
        //获取文件
        let file = NSBundle.mainBundle().pathForResource("db.sql", ofType: nil)!
        
        //准备sql,使用try就是确定一定可以执行到这句代码
        let sql = try! String(contentsOfFile: file)
        
        //执行sql,db是数据库的名字
        queue.inDatabase { (db) -> Void in
            let result = db.executeStatements(sql)
            
            if result {
                
                print("创建表成功")
                
            } else {
                print("创建表失败")
            }
        }
    }
    
    
    func execRecord(sql:String) -> [[String: AnyObject]] {
        
        //创建一个临时数组保存字典
        var tempArr:[[String: AnyObject]] = [[String: AnyObject]]()
        
        SQLManager.sharedTools.queue.inDatabase { (db) -> Void in
        let resultSet = db.executeQuery(sql, withArgumentsInArray: nil)
        while resultSet.next() {
            
            //创建一个可变字典
            var dic:[String: AnyObject] = [String: AnyObject]()
            
                //使用for in
                for i in 0..<resultSet.columnCount() {
                    //类似key
                    let name = resultSet.columnNameForIndex(i)
                    
                    //类似value
                    let value = resultSet.objectForColumnIndex(i)
                    
                    //进行赋值
                    dic[name] = value
                    
                    print("key:\(name) value:\(value)")
                    print("-------------------------------------")
                    
                }
                tempArr.append(dic)
            }
        }
        
        return tempArr
        
    }

    
}






































